﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using HomeCare.Model;
using HomeCare.Control;

namespace HomeCare.View
{
    public partial class CadCidade : Form
    {
        private int id = 0;
        private String acao = String.Empty;

        public CadCidade()
        {
            InitializeComponent();
        }

        private void CadCidade_Load(object sender, EventArgs e)
        {
            BloquearCampos();
            BloquearBotoes();
            BloquearBotoesComando();
            LimparCampos();
            
            //Verifica Acesso aos botoes
            Pessoa pessoa = new Pessoa();
            pessoa.id = PessoaEstatica.ID;
            Tela tela = new Tela();
            tela.id = 2;
            tela.descricao = this.Name;
            VerificaAcesso(pessoa, tela);

            Estado estado = new Estado();
            EstadoControl estadoControl = new EstadoControl();
            DataSet dtsEstados = estadoControl.ConsultaEstado(estado);

            cmbEstado.DataSource = dtsEstados.Tables[0];
            cmbEstado.DisplayMember = dtsEstados.Tables[0].Columns["Sigla"].ToString();
            cmbEstado.ValueMember = dtsEstados.Tables[0].Columns["ID"].ToString();
            cmbEstado.SelectedIndex = -1;
        }

        private void btnIncluir_Click(object sender, EventArgs e)
        {
            DesbloquearCampos();
            DesbloquearBotoes();
            BloquearBotoesComando();
            btnIncluir.Enabled = true;
            acao = "Incluir";
        }

        private void btnAlterar_Click(object sender, EventArgs e)
        {
            DesbloquearCampos();
            DesbloquearBotoes();
            BloquearBotoesComando();
            btnAlterar.Enabled = true;
            ConCidade conCidade = new ConCidade(this);
            conCidade.Show();
            acao = "Alterar";
        }

        private void btnExcluir_Click(object sender, EventArgs e)
        {
            DesbloquearCampos();
            DesbloquearBotoes();
            BloquearBotoesComando();
            btnExcluir.Enabled = true;
            acao = "Excluir";
            ConCidade consultaCidade = new ConCidade(this);
            consultaCidade.Show();
        }

        private void btnConsultar_Click(object sender, EventArgs e)
        {
            BloquearBotoesComando();
            DesbloquearBotoes();
            btnConsultar.Enabled = true;

            acao = "Consultar";
            ConCidade consultaCidade = new ConCidade(this);
            consultaCidade.Show();

        }

        private void btnConfirmar_Click(object sender, EventArgs e)
        {
            CidadeControl cidadeControl = new CidadeControl();
            Cidade cidade = new Cidade();
            
            cidade.estado.id = Int32.Parse(cmbEstado.SelectedValue.ToString());
            cidade.cidade = txbCidade.Text;
            cidade.id = id;
            string msg = cidadeControl.ValidaCidade(cidade);
            if (String.IsNullOrEmpty(msg))
            {
                switch (acao)
                {
                    case "Incluir":
                        bool retorno = cidadeControl.InsereCidade(cidade);
                        if (retorno)
                        {
                            MessageBox.Show("Cidade inserida com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            LimparCampos();
                        }
                        else
                        {
                            MessageBox.Show("Erro ao inserir a Cidade", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        break;
                    case "Alterar":
                        bool retorno2 = cidadeControl.AlteraCidade(cidade);
                        if (retorno2)
                        {
                            MessageBox.Show("Cidade alterada com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            LimparCampos();
                        }
                        else
                        {
                            MessageBox.Show("Erro ao alterar a Cidade", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        break;

                    case "Excluir":
                        bool retorno3 = cidadeControl.ExcluiCidade(cidade);
                        if (retorno3)
                        {
                            MessageBox.Show("Estado excluido com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            LimparCampos();
                        }
                        else
                        {
                            MessageBox.Show("Erro ao excluir o estado", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        }
                        break;
                }
                   
                BloquearCampos();
                BloquearBotoes();
                LimparCampos();

                //Verifica Acesso aos botoes
                Pessoa pessoa = new Pessoa();
                pessoa.id = 1;
                Tela tela = new Tela();
                tela.id = 2;
                tela.descricao = this.Name;
                VerificaAcesso(pessoa, tela);

            }
            else
                MessageBox.Show(msg, "Erro de validação", MessageBoxButtons.OK, MessageBoxIcon.Error);
            
        }
            
        private void btnCancelar_Click(object sender, EventArgs e)
        {
            BloquearCampos();
            BloquearBotoes();
            LimparCampos();

            //Verifica Acesso aos botoes
            Pessoa pessoa = new Pessoa();
            pessoa.id = 1;
            Tela tela = new Tela();
            tela.id = 2;
            tela.descricao = this.Name;
            VerificaAcesso(pessoa, tela);
        }

        private void DesbloquearCampos()
        {
            cmbEstado.Enabled = true;
            txbCidade.Enabled = true;
        }

        private void BloquearCampos()
        {
            cmbEstado.Enabled = false;
            txbCidade.Enabled = false;
        }

        private void LimparCampos()
        {
            cmbEstado.Text = String.Empty;
            txbCidade.Text = String.Empty;
        }

        private void BloquearBotoes()
        {
            btnCancelar.Enabled = false;
            btnConfirmar.Enabled = false;
        }

        private void DesbloquearBotoes()
        {
            btnCancelar.Enabled = true;
            btnConfirmar.Enabled = true;
        }

        private void BloquearBotoesComando()
        {
            btnIncluir.Enabled = false;
            btnAlterar.Enabled = false;
            btnExcluir.Enabled = false;
            btnConsultar.Enabled = false;
        }

        private void DesbloquearBotoesComando()
        {
            btnIncluir.Enabled = true;
            btnAlterar.Enabled = true;
            btnExcluir.Enabled = true;
            btnConsultar.Enabled = true;
        }
        private void VerificaAcesso(Pessoa pessoa, Tela tela)
        {
            AcessoControl acessoControl = new AcessoControl();
            DataSet acessoUsuario = acessoControl.VerificaAcesso(pessoa, tela);
            foreach (DataRow row in acessoUsuario.Tables[0].Rows)
            {
                if (row["Inclusao"].ToString() == "S")
                    btnIncluir.Enabled = true;
                if (row["Alteracao"].ToString() == "S")
                    btnAlterar.Enabled = true;
                if (row["Exclusao"].ToString() == "S")
                    btnExcluir.Enabled = true;
                if (row["Consulta"].ToString() == "S")
                    btnConsultar.Enabled = true;
            }
        }

        public void RecebeCidade(Cidade cidade)
        {
            this.Show();
            id = cidade.id;
            cmbEstado.Text = cidade.estado.sigla;
            txbCidade.Text = cidade.cidade;
            btnIncluir.Enabled = false;
            btnAlterar.Enabled = true;
            btnExcluir.Enabled = true;
        }
    }


}

